package icraf.carbon.core;

import java.util.ArrayList;

public interface AbacusContainer {

	public abstract double getTotalEmissionByCost(double treshold, CostBenefitUnit costBenefitUnit);
	public abstract double getTotalSequestration();
	public abstract double getTotalSequestrationNegativeCost(CostBenefitUnit costBenefitUnit);
	public abstract double getTotalEmission();
	public abstract double getTotalEmissionNegativeCost(CostBenefitUnit costBenefitUnit);
	public abstract AbacusData getDataMinEmission(CostBenefitUnit costBenefitUnit);
	public abstract AbacusData getDataMaxEmission(CostBenefitUnit costBenefitUnit);
	public abstract AbacusData getDataMinSequestration(CostBenefitUnit costBenefitUnit);
	public abstract AbacusData getDataMaxSequestration(CostBenefitUnit costBenefitUnit);
	
	public abstract double getCumulativeEmission(int index);
	
	public abstract OpcostData getAbacusData(int index, CostBenefitUnit costBenefitUnit);
	
	public abstract int getDataSize(CostBenefitUnit costBenefitUnit);
	
	public abstract int getIndexMinEmission();
	public abstract int getIndexMaxSequestrationNegativeCost(CostBenefitUnit costBenefitUnit);
	
	public abstract ArrayList<Zone> getDataZoneList();
	public abstract double getTotalArea();
}